"""
@Author  : 康帅
@Time    : 2021/3/17 9:40
@Function: 职责模式
"""

"""
什么是职责模式：
1.避免请求发送者与接收者耦合在一起，让多个对象都有可能接收请求。将这些接收对象连接成一条链，并且沿着这条链传递请求，直到有对象处理它为止。
2.职责模式也称为责任链模式，它将请求的发送者和接收者解耦了。客户端不需要知道请求处理者的明确信息和处理的具体逻辑，
甚至不需要知道链的结构，它只需要将请求进行发送即可。

设计职责模式要点：
1.请求者与请求内容：确认谁要发送请求，发送请求的对象称为请求者。请求的内容通过发送请求时的参数进行传递。
2.哪些责任人：责任人是构成责任链的关键要素。请求的流动方向是链条中的线，而责任人则是链条上的节点，线和节点共同构成了一条链条。
3.对责任人进行抽象：真实世界中的责任人多种多样，纷繁复杂，有不同的职责和功能；但他们也有一个共同的特征—都可以处理请求。
所以需要对责任人进行抽象，使他们具有责任的可传递性。
4.责任人可自由组合：责任链上的责任人可以根据业务的具体逻辑进行自由的组合和排序。

优点：
1.降低耦合度。它将请求的发送者和接收者解耦。
2.简化了对象。它使得对象不需要知道链的结构。
3.增强给对象指派职责的灵活性。可改变链内的成员或者调动它们的次序，允许动态地新增或者删除责任人。
4.增加新的处理类很方便。

缺点：
1.不能保证请求一定被接收。
2.系统性能将受到一定的影响，而且在进行代码调试时不太方便，可能会造成循环调用。

应用场景：
1.有多个对象可以处理同一个请求，具体哪个对象处理该请求在运行时刻自动确定。
2.请求的处理具有明显的一层层传递关系。
3.请求的处理流程和顺序需要程序运行时动态确定。
4.常见的审批流程（账务报销、转岗申请等）。

"""
